package controller

import (
	"errors"
	"fmt"
	"gindemo/common/settings"
	"gopkg.in/yaml.v3"
	"os"

	"github.com/gin-gonic/gin"
)

func (r *RootController) YamlStatic(c *gin.Context) {
	p := ""
	// 从 r.Conf.TemplatePaths 配置的目录中搜索模板文件
	for _, templatePath := range settings.DefaultAppConfig.TemplatePaths {
		// 检查模板文件是否存在
		lpath := fmt.Sprintf("%s/yaml/%s.yaml", templatePath, c.Query("path"))
		if _, err := os.Stat(lpath); err == nil {
			p = lpath
			break
		}
	}
	if p == "" {
		panic(errors.New(fmt.Sprintf("目标文件不存在: %s", c.Query("path"))))
	}
	// 文件存在则 yaml 格式化
	// 读取文件内容
	yamlData, err := os.ReadFile(p)
	if err != nil {
		panic(err)
	}
	// yaml 格式化
	var data map[string]interface{}
	if err := yaml.Unmarshal(yamlData, &data); err != nil {
		panic(err)
	}
	c.JSON(200, data)
}
